Skip to content

research(ui): Node 夹具在 CI 的耗时分布 (#144) - #179

Merged
JavaZeroo merged 2 commits into
mainfrom
diagnose/node-contract-timing-r144
Oct 29, 2026
Merged

JavaZeroo merged 2 commits into
mainfrom
diagnose/node-contract-timing-r144

Conversation

@JavaZeroo

Copy link
Copy Markdown
Owner

内容

为 #144 里可测的那一半补上数据:那条纯 Node 夹具在 hosted windows-2025 上到底要多久。

  • 在 dispatch-only 工作流里新增 windows-2025-node-contract-timing:只跑 node research/ui/test_raster_native_contract.js,顺序 60 次 + 20 批 × 4 并发(共 140 次),每次新进程、保留原 10 秒超时,记录耗时与超时并上传 JSON。
  • 发布固定结果:research/ui/results/2026-10-29-node-contract-timing/(README + validation.json),EVIDENCE 增加一行。

结果(run 40864960451,Node v22.23.4)

指标 值
顺序 p50 / p90 0.063 s / 0.078 s
顺序最大 1.469 s(第 1 次,冷启动)
并发批次最大 0.125 s
超时 0 / 140

结论

10 秒预算相对 warm 耗时约 130 倍余量、相对冷启动约 7 倍;已记录的两次 timed out after 10 seconds(PR141、#178 push)不能用夹具计算成本解释,更像宿主级停顿,但本批在空闲镜像上无法复现。#144/#38 保持开放,未改夹具、未延长预算、未重跑原失败。

Refs #144 #38

…144

Adds a dispatch-only job that runs the exact node command sixty times sequentially and in twenty four-way concurrent batches, recording elapsed time and timeouts against the unchanged fixed 10s budget.


Sixty sequential and twenty four-way concurrent runs of the exact failing command: warm ~60-80ms, cold start 1.47s, zero timeouts against the unchanged 10s budget. The recorded 10s failures are far outside this distribution.
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 29, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-29T11:27:54.157981Z 7f8221f PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7f8221ff74

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

print(json.dumps(report))
with open("node-contract-timing.json", "w", encoding="utf-8") as stream:
json.dump(report, stream, indent=2)
sys.exit(1 if report["sequential_timeouts"] or report["concurrent_timeouts"] else 0)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Reject failed fixture runs before accepting timing evidence

If the fixture exits nonzero without timing out, this job still succeeds and includes the failed invocation in its timing distribution. Executing the embedded Python with all 140 subprocess calls returning exit code 1 produces workflow exit code 0. Unlike test_production_js_native_contract, which asserts a zero return code, this diagnostic can therefore report ample timeout headroom while measuring assertion failures rather than completed workloads. Check every recorded return code and mark the diagnostic unsuccessful when any invocation fails, while retaining its evidence artifact. This also satisfies the repository requirement for correctness checks alongside performance claims.

AGENTS.md reference: AGENTS.md:L12-L12

Useful? React with 👍 / 👎.

Comment thread docs/EVIDENCE.md
| 范围 | 结果与复现入口 | 可以支持的结论与限制 |
|---|---|---|
| 行存储封存与结构单一发布(#169 第二片) | [固定结果](../experiments/core/results/2026-10-29-sealed-row-storage/README.md)、[验证身份](../experiments/core/results/2026-10-29-sealed-row-storage/validation.json) | `Screen::lines/history` 私有,只读口 + 23 文件/363 处迁移;Find overlay 改文档 rank;默认 Release 构建 exit 0、核心 8/8、扩展快测 20/20、candidate 源 /W4 编译 0。无新 VT/重排行为;运行中跨重排 Search、Qt 与候选运行由宿主作业复核。 |
| Node 纯夹具在 CI 的耗时分布(#144 未闭) | [固定结果](research/ui/results/2026-10-29-node-contract-timing/README.md)、[验证身份](research/ui/results/2026-10-29-node-contract-timing/validation.json) | hosted windows-2025、Node v22.23.4:顺序 60 次 + 20×4 并发共 140 次、0 超时;warm ~63–78ms、冷启动 1.469s、并发最大 0.125s。10s 预算余量充足,两次 10s 失败不能用夹具成本解释;宿主停顿假设未复现,#144/#38 不关闭。 |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Correct the evidence links to point outside docs

Both new links resolve relative to docs/EVIDENCE.md, so they target docs/research/ui/results/..., whereas the committed results are under repository-root research/ui/results/.... Repository-wide path inspection and the reviewed commit's tree confirm that neither linked target exists. Prefix both paths with ../ so readers can reach the fixed results and validation record from the evidence index.

Useful? React with 👍 / 👎.

@JavaZeroo
JavaZeroo merged commit ccb6f6f into main Oct 29, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant